package com.start.quartz.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.start.quartz.entity.StartQuartzEntity;
import com.start.quartz.model.StartQuartzEntityModel;
import org.quartz.SchedulerException;

/**
 * 定时任务
 *
 * @author gxl
 * @email ${email}
 * @date 2021-01-04 11:00:51
 */
public interface StartQuartzService extends IService<StartQuartzEntity> {
    /**
     * 激活任务
     *
     * @param id
     */
    void activeTask(String id);

    /**
     * 停止任务
     *
     * @param id
     */
    void disableTask(String id) throws SchedulerException;

    /**
     * 删除任务
     *
     * @param id
     */
    void deleteTask(String id);

    /**
     * 暂停任务
     *
     * @param id
     * @throws SchedulerException
     */
    void pauseTask(String id) throws SchedulerException;

    /**
     * 暂停全部任务
     */
    void pauseAll() throws SchedulerException;

    /**
     * 立即执行某个任务
     *
     * @param id
     */
    void startTask(String id) throws SchedulerException;

    /**
     * 恢复任务
     *
     * @param id
     */
    void recovery(String id) throws SchedulerException;

    void recoveryAll() throws SchedulerException;

    /**
     * 修改任务
     *
     * @param sysQuartz
     */
    void updateTask(StartQuartzEntity sysQuartz) throws SchedulerException;

    Page<StartQuartzEntityModel> pageQuartzEntityModel(Page<StartQuartzEntityModel> page, QueryWrapper<StartQuartzEntityModel> queryWrapper);

    /**
     * 获取指定id 定时任务
     *
     * @param id
     * @return
     */
    StartQuartzEntityModel getQuartById(String id);

}

